#ifndef __WIOTA_SUBF_H__
#define __WIOTA_SUBF_H__

#include <rtthread.h>

/**
 * @brief 子帧数据节点结构体
 *
 */
typedef struct
{
    rt_list_t node;             /** 节点 */
    unsigned int wiota_id;      /** WIoTa ID */
    unsigned int dev_id;        /** 设备ID */
    unsigned int last_subf_cnt; /** 上一次记录收到上行子帧数据的次数 */
    unsigned int subf_cnt;      /** 当前收到子帧数据的次数 */
    unsigned int is_online;     /** 是否在线 */
} ul_subf_node_t;

/**
 * @brief WIoTa子帧模式初始化
 *
 */
void wiota_subf_mode_init(void);

/**
 * @brief WIoTa子帧模式反初始化
 *
 */
void wiota_subf_mode_deinit(void);

/**
 * @brief 获取一个节点，如果不存在则创建
 *
 * @param wiota_id         wiota_id
 * @return ul_subf_node_t* 节点指针
 */
ul_subf_node_t *wiota_subf_get_node(unsigned int wiota_id);

/**
 * @brief 获取子帧模式下的在线用户个数
 *
 * @return unsigned char 在线用户个数
 */
unsigned char wiota_get_user_number(void);

/**
 * @brief 获取是否是第一次收到子帧数据
 *
 * @return unsigned char 是否是第一次收到子帧数据
 */
unsigned char wiota_get_first_access(void);

/**
 * @brief 重置是否是第一次收到子帧数据标志
 *
 */
void wiota_reset_first_access(void);

#endif // __WIOTA_SUBF_H__